home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 242 / Issue 242 - April 2008 - DPCS0408DVD.ISO / Software Money Savers / VirtualDub / Source / VirtualDub-1.7.7-src.7z / src / Kasumi / source / a_stretchrgb_point.asm < prev    next >
Encoding:
Assembly Source File  |  2006-03-14  |  1.6 KB  |  103 lines

  1.         .686
  2.         .model    flat
  3.         .xmm
  4.         .mmx
  5.         .code
  6.  
  7.         assume fs:_DATA
  8.  
  9. scaleinfo    struct
  10. dst            dd            ?    
  11. src            dd            ?
  12. xaccum        dd            ?
  13. xfracinc    dd            ?
  14. xintinc        dd            ?
  15. count        dd            ?
  16. scaleinfo    ends
  17.  
  18. _vdasm_resize_point32    proc near
  19.         push    ebp
  20.         push    edi
  21.         push    esi
  22.         push    ebx
  23.  
  24.         mov        eax, [esp+4+16]
  25.  
  26.         mov        ebx, [eax].scaleinfo.xaccum
  27.         mov        ecx, [eax].scaleinfo.xfracinc
  28.         mov        edx, [eax].scaleinfo.src
  29.         mov        esi, [eax].scaleinfo.xintinc
  30.         mov        edi, [eax].scaleinfo.dst
  31.         mov        ebp, [eax].scaleinfo.count
  32. @@:
  33.         mov        eax,[edx*4]
  34.         add        ebx,ecx
  35.         adc        edx,esi
  36.         mov        [edi+ebp],eax
  37.         add        ebp,4
  38.         jne        @B
  39.  
  40.         pop        ebx
  41.         pop        esi
  42.         pop        edi
  43.         pop        ebp
  44.         ret
  45. _vdasm_resize_point32    endp
  46.  
  47. _vdasm_resize_point32_MMX    proc near
  48.         push    ebp
  49.         push    edi
  50.         push    esi
  51.         push    ebx
  52.  
  53.         mov        eax, [esp+4+16]
  54.  
  55.         push    0
  56.         push    fs:dword ptr [0]
  57.         mov        fs:dword ptr [0], esp
  58.  
  59.         mov        ebx, [eax].scaleinfo.xaccum
  60.         mov        esp, [eax].scaleinfo.xfracinc
  61.         mov        edx, [eax].scaleinfo.src
  62.         mov        esi, [eax].scaleinfo.xintinc
  63.         mov        edi, [eax].scaleinfo.dst
  64.         mov        ebp, [eax].scaleinfo.count
  65.  
  66.         mov        eax, ebx
  67.         mov        ecx, edx
  68.         add        ebx, esp
  69.         adc        edx, esi
  70.         add        esp, esp
  71.         adc        esi, esi
  72.  
  73.         add        ebp, 4
  74.         jz        @odd
  75. @dualloop:
  76.         movd        mm0, dword ptr [ecx*4]
  77.         punpckldq    mm0,[edx*4]
  78.         add        eax,esp
  79.         adc        ecx,esi
  80.         add        ebx,esp
  81.         adc        edx,esi
  82.         movq    [edi+ebp-4],mm0
  83.  
  84.         add        ebp,8
  85.         jnc        @dualloop
  86.         jnz        @noodd
  87. @odd:
  88.         mov        eax, [ecx*4]
  89.         mov        [edi-4], eax
  90. @noodd:
  91.         mov        esp, fs:dword ptr [0]
  92.         pop        eax
  93.         pop        eax
  94.  
  95.         pop        ebx
  96.         pop        esi
  97.         pop        edi
  98.         pop        ebp
  99.         ret
  100. _vdasm_resize_point32_MMX    endp
  101.  
  102.         end
  103.